package pe.edu.upc.jtigers.svpn.domain.model;

import java.io.Serializable;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;

import org.codehaus.jackson.annotate.JsonIgnore;

@Entity
public class Perfil implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7204423613832706973L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int idPerfil;
	private String descripcion;
	private String paginaPrincipal;
	private String css;
	private String opcionInicial;
	private boolean eliminado;
	// Un perfil tiene asociado de 0 a muchos menoes
	@JsonIgnore
	@ManyToMany
	@JoinTable(name="menuperfil", 
    joinColumns=@JoinColumn(name="IdPerfil"),
    inverseJoinColumns=@JoinColumn(name="IdMenu"))
	private Set<Menu> menus;

	@JsonIgnore
	@OneToMany(mappedBy = "perfil")
	private Set<Usuario> usuarios;

	public Perfil() {
		super();
	}

	public int getIdPerfil() {
		return idPerfil;
	}

	public void setIdPerfil(int idPerfil) {
		this.idPerfil = idPerfil;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getPaginaPrincipal() {
		return paginaPrincipal;
	}

	public void setPaginaPrincipal(String paginaPrincipal) {
		this.paginaPrincipal = paginaPrincipal;
	}

	public String getCss() {
		return css;
	}

	public void setCss(String css) {
		this.css = css;
	}

	public String getOpcionInicial() {
		return opcionInicial;
	}

	public void setOpcionInicial(String opcionInicial) {
		this.opcionInicial = opcionInicial;
	}

	public boolean isEliminado() {
		return eliminado;
	}

	public void setEliminado(boolean eliminado) {
		this.eliminado = eliminado;
	}

	public Set<Menu> getMenus() {
		return menus;
	}

	public void setMenus(Set<Menu> menus) {
		this.menus = menus;
	}

	public Set<Usuario> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(Set<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
}
